﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Xylee.Common
{
    /// <summary>
    /// Portals are defined as view instances that 
    /// may handle children or full application views 
    /// that can be transfered to, notified and or 
    /// destroyed. Visual attributes that are consistent 
    /// for all portals are defined in this interface.
    /// However, in the case of context based portals, we 
    /// utilize the concept of attaching <seealso cref="ContextItem"/> 
    /// instances to the portal in order to create a given 
    /// state in the program. Portals can use these objects 
    /// to create a context or filtering scheme. Portals can 
    /// view, filter and manage more than one context as uses 
    /// this within a dictionary of context portals.
    /// </summary>
    public interface IContextPortal<T> : IPortal where T : IViewable
    {
        void BindNewContext(ContextItem item);
        void UnbindContext(ContextItem item);
        ContextItem[] GetBindableContext();
    }
}
